package tech.aistar.day01;

import java.util.Date;

/**
 * 本类用来演示: 数据类型
 *
 * @author: success
 * @date: 2022/7/18 2:01 下午
 */
public class TypeDemo {
    public static void main(String[] args) {
        int a = 128;
        //byte - 1个字节8bit , [-128,127]

        //0 - 正数   1 - 负数
        //高低压电平 , 存储1这个数字的时候,需要消耗-5v的电压.


        //JVM是如何看待变量和常量???
        //变量 - 不会考虑这个变量中的具体的值,关心变量的类型的.
        //常量 - 不可变的量 - jvm在编译器就可以确定它的大小和数据类型.
        //      精确判断出这个常量在byte类型范围之内.

        byte b = (byte) a;//alter+enter
        System.out.println(b);// -128

        //java中看到一个整数,默认都是int类型
        byte t = 127;//ok

        // 0 开头的代表的是8进制
        int y = 032;
        int d = 0b1010;// 0b 二进制
        System.out.println(d);
        System.out.println(y);//26

        // <<  >>   >>>

        //long - jdk7.x支持
        long o = 1_2_345L;
        System.out.println(o);

        //关于char类型 - 字符类型 - 单引号,单个字符
        //char类型可以自动转换成int类型
        int x = 'a';
        //  'a'-97   'A' - 65   '0'-48
        System.out.println(x);//字母a对应的ascill码

        // 0~65535
        char c1 = 65;//ok
        System.out.println(c1);// A

        //win+r   native2ascii
        char c3 = '\u90d1';
        System.out.println(c3);

        char c4 = '\t';//特殊符号

        //历史问题 - 打印机
        //\n 和 \r
        //\n 换行,输出完毕之后,光标停在下一行的起始位置
        //\r 回车,输出完毕之后,光标停在当前行的起始位置
        System.out.println("ooooo\rppp");//pppoo

        //char类型是支持计算的
        char c5 = 'a' + 1;
        System.out.println(c5);//b

        //int类型不可以直接转换成float  => 4个字节
        int n = 123456789;
        float f = n;
        System.out.println("f:"+f);//1.23456792E8

        //double 8个字节
        double dd = n;
        System.out.println(dd);

        //小数计算会有精度丢失
        //java.math.BigDecimal
        System.out.println(0.1+0.2);//0.30000000000000004

        //java中看到一个小数,默认是double类型
        float m = (float) 3.14;
        float mm =  3.14f;

        double u = 99.99d;
        System.out.println(u);
    }
}
